package orm

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

//参数含义:数据库用户名、密码、主机ip、连接的数据库、端口号
func dbConn() *gorm.DB {
	dsn:="root:@jzy19920411@(localhost:3306)/goadmin?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.New(mysql.Config{
		DSN:dsn, // data source name
		DefaultStringSize: 256, // default size for string fields
		DisableDatetimePrecision: true, // disable datetime precision, which not supported before MySQL 5.6
		DontSupportRenameIndex: true, // drop & create when rename index, rename index not supported before MySQL 5.7, MariaDB
		DontSupportRenameColumn: true, // `change` when rename column, rename column not supported before MySQL 8, MariaDB
		SkipInitializeWithVersion: false, // auto configure based on currently MySQL version
	}))
	if err!= nil{
			panic(err)
	}
	// defer db.Close()
	return db
}

func GetDb() (conn *gorm.DB) {
	for {
			conn = dbConn()
			if conn != nil {
					break
			}
			fmt.Println("本次未获取到mysql连接")
	}
	return conn
}
// type User struct {
// 	Id      int     `gorm:"primary_key" json:"id"`
// 	Name    string  `json:"name"`
// 	Age     int     `json:"age"`
// 	Gender  int     `json:"gender"`     //1:男、2:女
// }

// //添加数据
// func (user *User) Add() {
// 	conn := db.GetDb()
// 	defer conn.Close()

// 	err := conn.Create(user).Error
// 	if err != nil {
// 			fmt.Println("创建失败")
// 	}
// }

// //修改数据
// func (user *User) Update() {
// 	conn := db.GetDb()
// 	defer conn.Close()

// 	err := conn.Model(user).Update(user).Error
// 	if err != nil {
// 			fmt.Println("修改失败")
// 	}
// }

// //删除数据
// func (user *User) Del() {
// 	conn := db.GetDb()
// 	defer conn.Close()

// 	err := conn.Delete(user).Error
// 	if err != nil {
// 			fmt.Println("删除失败")
// 	}
// }